package 特殊文件.读取XML文件中的数据;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

public class Test {
    public static void main(String[] args) throws DocumentException {
        // 解析XML文件: 使用程序读取XML文件中的数据
        // 注意: 程序员并不需要自己写原始的IO流代码来解析XML文件, 难度很大, 也相当繁琐
        // 其实, 有很多开源的, 好用的, 解析XML的框架, 最知名的是: Dom4j(第三方研发的)
        // 故得导入Dom4j框架

        // 了解Dom4j框架
        // Dom4j解析XML文件的思想: 文档对象模型    XML文件  --通过SAXReader解析器解析-> Document: 整个文档 -> Element:元素(标签) -> Attribute: 属性/子元素、文本

        // Dom4j解析XML的到Document对象
        // SAXReader: Dom4j提供的解析器, 可以认为是代表整个Dom4j框架
        // 构造器
        // 1. public SAXReader(): 构建Dom4j的解析器对象
        // 2. public Document read(String url): 把XML文件读成Document对象
        // 3. public Document read(InputStream is): 通过字节输入流读取XML文件
        // Document 方法:
        // Element getRootElement(): 获取根元素对象

        // Element提供的方法
        // 1. public String getName(): 得到元素名字
        // 2. public List<Element> elements(): 得到当前元素下所有子元素
        // 3. public List<Element> elements(String name): 得到当前元素下指定名字的子元素返回集合
        // 4. public Element element(String name): 得到当前元素下指定名字的子元素, 如果有很多名字相同的返回第一个
        // 5. public String attributeValue(String name): 通过属性名直接得到属性值
        // 6. public String elementText(子元素名): 得到指定名称的子元素的文本
        // 7. public String getText(): 得到文本


        // 1. 创建一个Dom4j框架提供的解析器对象
        SAXReader saxReader = new SAXReader();

//         2. 使用SAXReader对象把需要解析的XML文件读成一个Document对象.
        Document document = saxReader.read("Senior\\src\\特殊文件\\pat2.xml");

//
        Element root = document.getRootElement();
        System.out.println(root.getName());// users // 不知道为什么运行不过去

    }
}
